Transmission of moving pictures in real-time is employed in several applications like e.g. video conferencing, net meetings, TV broadcasting and video telephony.
However, representing moving pictures requires bulk information as digital video typically is described by representing each pixel in a picture with 8 bits (1 Byte). Such uncompressed video data results in large bit volumes, and can not be transferred over conventional communication networks and transmission lines in real time due to limited bandwidth.
Thus, enabling real time video transmission requires a large extent of data compression. Data compression may, however, compromise with picture quality. Therefore, great efforts have been made to develop compression techniques allowing real time transmission of high quality video over bandwidth limited data connections.
In video compression systems, the main goal is to represent the video information with as little capacity as possible. Capacity is defined with bits, either as a constant value or as bits/time unit. In both cases, the main goal is to reduce the number of bits.
The most common video coding method is described in the MPEG* and H.26* standards, all of which using block based prediction from previously encoded and decoded pictures.
The video data undergo four main processes before transmission, namely prediction, transformation, quantization and entropy coding.
The prediction process significantly reduces the amount of bits required for each picture in a video sequence to be transferred. It takes advantage of the similarity of parts of the sequence with other parts of the sequence. Since the predictor part is known to both encoder and decoder, only the difference has to be transferred. This difference typically requires much less capacity for its representation. The prediction is mainly based on picture content from previously reconstructed pictures where the location of the content is defined by motion vectors.
In a typical video sequence, the content of a present block M would be similar to a corresponding block in a previously decoded picture. If no changes have occurred since the previously decoded picture, the content of M would be equal to a block of the same location in the previously decoded picture. In other cases, an object in the picture may have been moved so that the content of M is more equal to a block of a different location in the previously decoded picture. Such movements are represented by motion vectors (V). As an example, a motion vector of (3; 4) means that the content of M has moved 3 pixels to the left and 4 pixels upwards since the previously decoded picture.
A motion vector associated with a block is determined by executing a motion search. The search is carried out by consecutively comparing the content of the block with blocks in previous pictures of different spatial offsets. The offset relative to the present block associated with the comparison block having the best match compared with the present block, is determined to be the associated motion vector.
In H.262, H.263, MPEG1, MPEG2 the same concept is extended so that motion vectors also can take ½ pixel values. A vector component of 5.5 then imply that the motion is midway between 5 and 6 pixels. More specifically the prediction is obtained by taking the average between the pixel representing a motion of 5 and the pixel representing a motion of 6. This is called a 2-tap filter due to the operation on 2 pixels to obtain prediction of a pixel in between. Motion vectors of this kind are often referred to as having fractional pixel resolution or fractional motion vectors. All filter operations can be defined by an impulse response. The operation of averaging 2 pixels can be expressed with an impulse response of (½, ½). Similarly, averaging over 4 pixels implies an impulse response of (¼,¼,¼,¼).